package cn.ljy.mes.model.common.enums;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * 预出库结算动作类型
 */
// 枚举定义（精简版）
public enum ReservationAction {
    CONFIRM_OUTBOUND("出库"),
    RELEASE_RESERVATION("撤销出库");

    private final String actionName;

    ReservationAction(String actionName) {
        this.actionName = actionName;
    }

    /**
     * 获取业务动作名称（如"出库"）
     */
    public String getActionName() {
        return this.actionName;
    }

    /**
     * 获取枚举值对应的名字，即括号内的值
     * @param action
     * @return null表示没有匹配
     */
    public static String getActionNameByAction(String action) {
        String actionName=null;
        ReservationAction reservationAction = getReservationAction(action);
        if(reservationAction!=null){
            actionName=getReservationAction(action).getActionName();
        }
        return actionName;
    }

    /**
     * 根据action动作获取当前的ReservationAction对象，即具体是枚举值中的哪个
     * @param action 枚举值
     * @return null表示没有匹配
     */
    public static ReservationAction getReservationAction(String action) {
        ReservationAction reservationAction=null;
        for(ReservationAction reservationActionOfEach:ReservationAction.values()){//遍历枚举值
            if(action.equalsIgnoreCase(reservationActionOfEach.name())){
                reservationAction=reservationActionOfEach;
                break;
            }
        }
        return reservationAction;
    }

    /**
     * 验证字符串是否为有效操作类型
     * 忽略大小写
     */
//    public static boolean validAction(String action) {
//        return Arrays.stream(values())
//                .anyMatch(e -> e.name().equalsIgnoreCase(action));
//    }

    /**
     * 获取所有有效值描述（用于错误提示）
     */
    public static String getValidActions() {
        return Arrays.stream(values())
                .map(Enum::name)
                .collect(Collectors.joining(", "));
    }


}
